home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / procssng / alv.sun / alv.lha / src / equalise.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-11-08  |  1.6 KB  |  76 lines

  1. #include "defs.h"
  2.  
  3. ixrect        *pr;
  4. har           *progname;
  5. har            filename[BUFSIZ];
  6.  
  7. #ifdef STANDALONE
  8. ain(argc, argv, envp)
  9. #else
  10. qualise_main(argc, argv, envp)
  11. #endif
  12.     int             argc;
  13.     char          **argv;
  14.     char          **envp;
  15. {
  16.     register int    i, j;
  17.     int             temp, n;
  18.     int             hist[10000][2];
  19.     int             sum, max_val;
  20.  
  21.     progname = strsave(argv[0]);
  22.     parse_profile(&argc, argv, envp);
  23.  
  24.     strcpy(filename, "stdin");
  25.  
  26.     while ((gc = getopt(argc, argv, " ")) != EOF)
  27.         switch (gc) {
  28.         case '?':
  29.             errflag++;
  30.             break;
  31.         }
  32.  
  33.     if (errflag)
  34.         error((char *) 0, "Usage: %s: [infile] [outfile]\n", progname);
  35.  
  36.     for (stream = 0; optind < argc; stream++, optind++)
  37.         if (stream < 2 && strcmp(argv[optind], "-") != 0)
  38.             if (freopen(argv[optind], mode[stream], f[stream]) == NULL)
  39.                 error("%s %s", PR_IO_ERR_INFILE, argv[optind]);
  40.  
  41.     if ((pr = pr_load(stdin, NULL)) == NULL)
  42.         error(PR_IO_ERR_RASREAD);
  43.  
  44.     if (pr->pr_depth == 1) {
  45.         pr_dump(pr, stdout, NULL, RT_STANDARD, 0);
  46.         exit(0);
  47.     }
  48.  
  49.     if (bitrestrict)
  50.         max_val = calc_max(pr);
  51.     else
  52.         max_val = MAXLEVEL(pr->pr_depth);
  53.  
  54.     for (i = 0; i < max_val; i++)
  55.         hist[i][0] = hist[i][1] = 0;
  56.  
  57.     for(i=0;i<pr->pr_size.x;i++)
  58.         for(j=0;j<pr->pr_size.y;j++)
  59.             hist[pr_get(pr,i,j)][0]++;
  60.  
  61.     n = pr->pr_size.x * pr->pr_size.y;
  62.     sum = 0;
  63.     for (i = 0; i < max_val; i++) {
  64.         sum += hist[i][0];
  65.         temp = sum * max_val / n;
  66.         temp = (temp > max_val) ? max_val : temp;
  67.         hist[i][1] = temp;
  68.     }
  69.  
  70.     for(i=0;i<pr->pr_size.x;i++)
  71.         for(j=0;j<pr->pr_size.y;j++)
  72.             pr_put(pr,i ,j , hist[pr_get(pr,i,j)][1]);
  73.  
  74.     pr_dump(pr, stdout, NULL, RT_STANDARD, 0);
  75. }
  76.